<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * Projeto Interdiciplinar
 * Gurpo 1 - Primeira turma do curso de Aux Info da Escom Brasília
 * Criado em: 23/11/2012, 09:14:51
 * Description of m_visitante
 *
 *  * @author 2 Sgt Lemoel, 
 *         3 Sgt Albuquerque,
 *         3 Sgt Azambuja,
 *         3 Fabio Moura
 * @since 11/2012
 * @version 1
 */
class M_Visitante extends CI_Model {

    function __construct() {
        parent::__construct();
        $this->_tabela = "VISITANTE";
    }

    public function gravaVisitante($dados) {

        if (count($dados) > 0) {
            /*
             * tabela VEICULO
             */
            $arrayVeiculo['PLACA'] = $dados['PLACA'];
            $arrayVeiculo['MODELO'] = $dados['MODELO'];
            $arrayVeiculo['MARCA'] = $dados['MARCA'];
            $arrayVeiculo['COR'] = $dados['COR'];

            /*
             * tabela VISITANTE
             */
            $arrayVisitantes['IDT'] = $dados['IDT'];
            $arrayVisitantes['NOME'] = $dados['NOME'];

            /*
             * tabela PARTE_VISITANTE
             */
            $arrayParteVisitante['PARTE_ID'] = $dados['PARTE_ID'];
            $arrayParteVisitante['VISITANTE_IDT'] = $arrayVisitantes['IDT'];
            $arrayParteVisitante['DT_HORA_INICIO'] = date("Y-m-d H:i:s");
            $arrayParteVisitante['DEPENDENCIA_ID'] = $dados['DEPENDENCIA_ID'];
            $arrayParteVisitante['ACOMPANHANTE_IDT'] = $dados['ACOMPANHANTE_IDT'];
            $arrayParteVisitante['VEICULO_PLACA'] = $dados['PLACA'];
            $arrayParteVisitante['MOTIVO'] = $dados['MOTIVO'];

            /*
             * Iniciando uma transação no banco de dados
             */
            $this->db->trans_start();
            $this->db->insert('VEICULO', $arrayVeiculo);
            $this->db->insert('VISITANTE', $arrayVisitantes);
            $this->db->insert('PARTE_VISITANTE', $arrayParteVisitante);
            /*
             * Finalizando a transacao do banco
             */
            $this->db->trans_complete();

            /*
             * Checando se a trasação foi bem realizada
             */
            if ($this->db->trans_status() === FALSE) {
                return FALSE;
            } else {
                return TRUE;
            }
        } else {
            return FALSE;
        }
    }
    
    public function updateVisitante($dados) {

        if (count($dados) > 0) {
            /*
             * tabela VEICULO
             */
            $placa = $dados['PLACA'];      
            $arrayVeiculo['MODELO'] = $dados['MODELO'];
            $arrayVeiculo['MARCA'] = $dados['MARCA'];
            $arrayVeiculo['COR'] = $dados['COR'];

            /*
             * tabela VISITANTE
             */
            $idtVisitante = $dados['IDT'];
            $arrayVisitantes['NOME'] = $dados['NOME'];

            /*
             * tabela PARTE_VISITANTE
             */
       
            $parteId = $dados['PARTE_ID'];            
            $arrayParteVisitante['DT_HORA_INICIO'] = $dados['DT_HORA_INICIO'];
            
            if(!empty($dados['DT_HORA_FIM'])){
                $arrayParteVisitante['DT_HORA_FIM'] = $dados['DT_HORA_FIM'];
            } else {
                 $arrayParteVisitante['DT_HORA_FIM'] = NULL;
            }

            $arrayParteVisitante['DEPENDENCIA_ID'] = $dados['DEPENDENCIA_ID'];
            $arrayParteVisitante['ACOMPANHANTE_IDT'] = $dados['ACOMPANHANTE_IDT'];
            $arrayParteVisitante['MOTIVO'] = $dados['MOTIVO'];

            /*
             * Iniciando uma transação no banco de dados
             */
            $this->db->trans_start();

                /*
                 * UPDATE TABELA VEICULO
                 */
               $this->db->where('PLACA',$placa);
               $this->db->update('VEICULO', $arrayVeiculo); 
               
               
               /*
                * UPDATE TABELA VISITANTE
                */
               $this->db->where('IDT',$idtVisitante);
               $this->db->update('VISITANTE', $arrayVisitantes); 
               
               
               /*
                * UPDATE TABELA PARTE_VISITANTE
                */

               //'',
               
               $this->db->where(array('PARTE_ID'=>$parteId,'VISITANTE_IDT'=>$idtVisitante));
               $this->db->update('PARTE_VISITANTE', $arrayParteVisitante); 
            /*
             * Finalizando a transacao do banco
             */
            $this->db->trans_complete();

            /*
             * Checando se a trasação foi bem realizada
             */
            if ($this->db->trans_status() === FALSE) {
                return FALSE;
            } else {
                return TRUE;
            }
        } else {
            return FALSE;
        }
    }

    public function listaVisitante($parteId = null) {
        $sql = "SELECT PV.`PARTE_ID`,
                        PV.`VISITANTE_IDT`,  
                        V.`NOME` NOME_VISITANTE,
                        DATE_FORMAT(PV.DT_HORA_INICIO, '%d/%m/%Y <br/> %H:%i:%s') DT_HORA_INICIO,
                        DATE_FORMAT(PV.DT_HORA_FIM, '%d/%m/%Y <br/> %H:%i:%s') DT_HORA_FIM,
                        D.`DEP_DESC`,
                        D.`RAMAL` RAMAL_SESSAO_DESTINO,
                        U.`NOME_GUERRA`,
                        U.`IDT` IDT_ACOMP,
                        DACOMP.`DEP_DESC` DEP_ACOMP,
                        DACOMP.`RAMAL` RAMAL_ACOMP,
                        PG.`PST_GRAD_SIGLA` PST_GRAD_SIGLA_ACOMP,
                        PV.`MOTIVO`,
                        VI.`PLACA`,
                        VI.`MODELO`,
                        VI.`MARCA`,
                        VI.`COR`
              FROM PARTE_VISITANTE PV
                    INNER JOIN VISITANTE V ON V.`IDT` = PV.`VISITANTE_IDT`
                    INNER JOIN DEPENDENCIA D ON D.`ID` = PV.`DEPENDENCIA_ID`
                    INNER JOIN USUARIO U ON U.`IDT` = PV.`ACOMPANHANTE_IDT`
                    INNER JOIN VEICULO VI ON VI.`PLACA` = PV.`VEICULO_PLACA`
                    INNER JOIN PST_GRAD PG ON PG.`ID` = U.`PST_GRAD_ID`
                    INNER JOIN DEPENDENCIA DACOMP ON DACOMP.`ID` = U.`DEPENDENCIA_ID`
              WHERE PV.`PARTE_ID` = ?
             ORDER BY PV.DT_HORA_INICIO DESC";
        return $this->db->query($sql,array($parteId));
    }

    public function excluirVisitante($idt, $parteId) {
        
        /*
         * Na realidade este método deveria remover tanto o visitante de parte_visitante
         * como ele da tabela visitante e seu carro.
         * Acontece que este visitante pode ter vindo outras vezes no quartel 
         * assim se tentarmos apaga-lo da tabela visitante vai dar erro por tem registros
         * na tabela parte_visitante que esta usando
         * Entao teria que primeiro dar um select na tabela para depois tentar apagar
         * devido ao tempo nao implementei isso
         * Entao e bom ficar claro que na tabela visitante nunca esta sendo apagado um 
         * visitante e nem seu carro, vou usar isso para buscar quando ele voltar no 
         * quartel outro dia.
         */
        
        /*
         * DELETAR PARTE_VISITANTE
         */
        return $this->db->delete('PARTE_VISITANTE',array('PARTE_ID' =>$parteId,'VISITANTE_IDT' => $idt));
       
    }
    
    public function dadosVisitanteEdicao($idt,$parteId) {
        /*
         * O correto nestes cassos era buscar as vezes que o visitante foi ao quartel
         * para alterar um caso especifico, aqui estou partindo do 
         * presuposto que o visitante foi apenas uma vez no quartel
         */
        
        $sql = "SELECT PV.`VEICULO_PLACA` FROM PARTE_VISITANTE PV 
                WHERE PV.`PARTE_ID` = ?
                AND PV.`VISITANTE_IDT` = ?";
        
        $dados['placa'] = trim($this->db->query($sql,array($parteId,$idt))->row()->VEICULO_PLACA);
        
        if(!empty($dados['placa'])){
            $this->db->select('PLACA,MODELO,MARCA,COR')
                     ->from('VEICULO')
                     ->where('PLACA',$dados['placa']);
            
            $dados['veiculo'] = $this->db->get()->row();
        }

        $sql = "SELECT PG.`PST_GRAD_SIGLA`,
                        U.`NOME_GUERRA`,
                        U.`IDT` IDT_ACOMPANHANTE,
                        D.`ID` DEPENDENCIA_ID,
                        D.`DEP_DESC`,
                        PV.`MOTIVO`,
                        PV.`DT_HORA_INICIO`,
                        PV.`DT_HORA_FIM`

                FROM PARTE_VISITANTE PV
                    INNER JOIN DEPENDENCIA D ON D.`ID` = PV.`DEPENDENCIA_ID`
                    INNER JOIN USUARIO U ON U.`IDT` = PV.`ACOMPANHANTE_IDT`
                    INNER JOIN PST_GRAD PG ON PG.`ID` = U.`PST_GRAD_ID`
                WHERE PV.`PARTE_ID` = ?
                AND PV.`VISITANTE_IDT` = ?";
        
        $dados['parte_visitante'] = $this->db->query($sql,array($parteId,$idt))->row();
        
        $sql =" SELECT * 
                FROM VISITANTE
                WHERE IDT = ? ";
        
        $dados['visitante'] = $this->db->query($sql,array($idt))->row();
        
        return $dados;
        
    }
    
}

?>